package com.znow.admin.system.security.service;

import com.znow.admin.dao.entity.sys.SysRoleEntity;
import com.znow.admin.dao.entity.sys.SysUserRoleEntity;
import com.znow.admin.system.security.model.res.role.SysRolePageRequest;
import com.znow.admin.system.security.model.res.role.SysRoleRequest;
import com.znow.admin.system.security.model.vo.SysRoleVO;
import com.znow.common.model.PageResult;

import java.util.List;

/**
 * 系统角色服务
 *
 * @author PC
 * @date 2023/02/02
 */
public interface SysRoleService {

    /**
     * 获取角色列表
     *
     * @param request 请求
     * @return {@link PageResult}<{@link SysRoleVO}>
     */
    PageResult<SysRoleVO> getRoleList(SysRolePageRequest request);

    /**
     * 获取角色详情
     *
     * @param request 请求
     * @return {@link SysRoleVO}
     */
    SysRoleVO getRoleDetail(SysRolePageRequest request);

    /**
     * 通过用户id获取角色列表
     *
     * @param userId 用户id
     * @return {@link List}<{@link SysRoleEntity}>
     */
    List<SysUserRoleEntity> getRoleListByUserId(Long userId);

    /**
     * 保存角色
     *
     * @param request 请求
     * @return {@link Boolean}
     */
    Boolean saveRole(SysRoleRequest request);

    /**
     * 更新作用
     *
     * @param request 请求
     * @return {@link Boolean}
     */
    Boolean updateRole(SysRoleRequest request);

    /**
     * 删除角色
     *
     * @param request 请求
     * @return {@link Boolean}
     */
    Boolean deleteRole(SysRoleRequest request);
}
